import { readFileSync } from "fs"
import { aliasObj } from "../extension.d"
/**
 * 读取vue.config.js文件，获取其中所有路径别名设置
 * @param projectPath 项目根路径即vue.config.js所在路径
 * @returns 返回所有路径别名设置
 */
export function readVueConfigJs(projectPath: string): aliasObj[] {
  // 默认的路径别名
  let aliasObjArr: aliasObj[] = [
    {
      key: "@",
      value: "src"
    }
  ]
  try {
    // 读取项目根目录下的vue.config.js
    const vueAliasString = readFileSync(projectPath + "vue.config.js", "utf8")
    // 获取所有路径别名
    console.log(vueAliasString)

    const aliasArr = vueAliasString.match(/\.set\("[^"]*"\,\s+resolve\("[^"]*"\)/g)
    if (aliasArr?.length) {
      aliasArr?.forEach(item => {
        aliasObjArr.push({
          key: item.substring(
            item.indexOf(".set(") + 6,
            item.indexOf('"', item.indexOf(".set(") + 6)
          ),
          value: item.substring(
            item.indexOf("resolve(") + 9,
            item.indexOf('"', item.indexOf("resolve(") + 9)
          )
        })
      })
    }
    // 返回所有的路径别名
    return aliasObjArr
  } catch (err) {
    console.log(`Error reading vue.config.js: ${err}`)
    // 返回默认的路径别名@
    return aliasObjArr
  }
}
